package ltd.hanamaki.study.homework.lesson;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Demo05 {

    /* 打印 倒立的 九九乘法表  */
    public static void printTable() {
        for (int i = 9; i >= 1; i--) {
            for (int k = 8; k >= i; k--) {
                System.out.print("\t");
            }

            for (int j = 1; j <= i; j++) {
                System.out.print("*" + "\t");
            }
            System.out.println();

        }

        for (int i = 1; i <= 9; i++) {
            for (int k = 0; k < i - 1; k++) {
                System.out.print("\t");
            }

            for (int j = 9; j >= i; j--) {
                System.out.print("*" + "\t");
            }
            System.out.println();
        }

    }

    /*5．
将一个正整数分解质因数。例如：输入90,打印出90=2*3*3*5。
质因数就是质因数就是一个数的约数，并且是质数，
比如8=2×2×2，2就是8的质因数。
12=2×2×3，2和3就是12的质因数。
把一个式子以12=2×2×3的形式表示，叫做分解质因数。
*/

    public static void ysfj(int num) {

        /* 首先 定义一个 最小的 倍数 */
        int k = 2;
        System.out.print(num + "=");
        while (k <= num) {
            if (num == k) {
                System.out.print(num);
                break;
            } else if (num % k == 0) {
                System.out.print(k + "*");
                num /= k;
            } else {
                k++;
            }
        }
    }

    /* 6．输入某年某月某日，判断这一天是这一年的第几天？*/
    public static void printDay() {
        Scanner scanner = new Scanner(System.in);
        int y, m, d;
        System.out.println("请输入年份：");
        y = scanner.nextInt();
        System.out.println("请输入月份：");
        m = scanner.nextInt();
        System.out.println("请输入日：");
        d = scanner.nextInt();
        /* 定义一个 天数的 初始化变量 */
        int days = 0;
        for (int i = 1; i < m; i++) {
            switch (i) {
                case 2:
                    days += 28;
                    if (i % 4 == 0 && i % 100 != 0 || (i % 400) == 0) {
                        days++;
                    }
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    days += 30;
                    break;
                default:
                    days += 31;
            }

        }
        days += d;

        System.out.println("今天是一年中的第" + days + "天");


    }

    /* 使用 Java中的 内置类 来实现 天数的计算  日历类  */
    public static void calendar() {

        Scanner scanner = new Scanner(System.in);
        int y, m, d;
        System.out.println("请输入年份：");
        y = scanner.nextInt();
        System.out.println("请输入月份：");
        m = scanner.nextInt();
        System.out.println("请输入日：");
        d = scanner.nextInt();
        /*  */
        /* 得到 当前的  日历类 对象 */
        Calendar instance = Calendar.getInstance();
        /* 可以 给 日历 设置 年月日信息 */
        instance.set(y, m - 1, d, 24, 60);
        /* 可以获得当前日期的  时间戳 */
        long timeInMillis = instance.getTimeInMillis();
        System.out.println("打印日历信息：" + instance);
        System.out.println(timeInMillis);
//        int i = instance.get(6);
//        System.out.println(i);

        /* 使用计算的方式 来获取 */
        Calendar init = Calendar.getInstance();
        /* 可以 给 日历 设置 年月日信息 */
        init.set(y, 0, 1, 24, 60);
        long timeInMillis1 = init.getTimeInMillis();

        long result = timeInMillis - timeInMillis1;
        System.out.println(result / 1000 / 60 / 60 / 24);


        /*  */
    }

    /* Java中的  日期 对象  */
    public static void date() {

        /* 在Java中 可以 直接获取 系统的  当前时间 */
        Date date = new Date();
        System.out.println(date);

        /* 在Java中 格式化 时间信息  需要使用 工具类 */
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = simpleDateFormat.format(date);
        System.out.println(format);


        /* Java中 使用时间戳 */
        long l = System.currentTimeMillis();
        System.out.println(l);
        String format1 = simpleDateFormat.format(l);
        System.out.println(format1);

    }



    public static void main(String[] args) {
//        printTable();
//        ysfj(135);
//        printDay();
//        calendar();
        date();

    }
}
